#ifndef EPUBZLIB_DEVS_ZIP_HPP
#define EPUBZLIB_DEVS_ZIP_HPP

SJR_NAMESPACE_BEGIN

class EpubZip final {
public:
  using OnZipProcessListener = EpubZipBasic::OnZipProcessListener;

  EpubZip() : mBasic(new EpubZipMiniZlib()) {}

  ~EpubZip() {
    delete (mBasic);
  }

  EpubZip(EpubZip const &) = delete;
  EpubZip &operator=(EpubZip const &) = delete;

  void clean() {
    (*mBasic).clean();
  }

  void add(std::string const &path) {
    (*mBasic).add(path);
  }

  void compress(std::string const &path) {
    (*mBasic).compress(path);
  }

  void registerOnZipProcessListener(OnZipProcessListener *listener) {
    (*mBasic).registerOnZipProcessListener(listener);
  }

  void unregisterOnZipProcessListener(OnZipProcessListener *listener) {
    (*mBasic).unregisterOnZipProcessListener(listener);
  }

private:
  EpubZipBasic *mBasic;
};

SJR_NAMESPACE_END

#endif//EPUBZLIB_DEVS_ZIP_HPP
